package javaClassExercise.designPatterns.abstractFactory;

/**
 * Created by lomo on 2017/3/25.
 *
 * 测试抽象工厂类
 *
 * 详细解释见注释！！！
 *
 */
public class abstractFactoryTest {
    public static void main(String[] args) {

        //创建一个工厂类SendMailFactory的实例provider
        Provider provider = new SendMailFactory();
        //获得一个MailSender类的实例sender
        Sender sender = provider.produce();
        sender.send();   //您调用了抽象工厂模式下的功能类MailSender里的send方法 -- 具体实现功能类1！！


        /* 详细注释 + 解释 */
        //通过 工厂类SendSmsFactory 创建一个provider1实例, 并将该实例存储在provider1对象中
        Provider provider1 = new SendSmsFactory();
        //通过对provider1这个对象的produce方法调用，可以获得SmsSender这个功能类的实例，并将其存储在sender1对象中
        Sender sender1 = provider1.produce();
        //调用sender1对象中存储的SmsSender实例的方法send()
        sender1.send();  //输出：您调用了抽象工厂模式下的功能类SmsSender里的send方法 -- 具体实现功能类2！！

    }
}
